package com.haixiaoke.saas.repository.mapper;

import com.haixiaoke.saas.repository.pojo.MetroLine;
import com.haixiaoke.saas.repository.util.Tree.Node;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 地铁省市-根据id关联地铁号线Mapper接口
 * 
 * @author haixiaoke
 * @date 2023-04-06
 */
@Mapper
public interface MetroLineMapper {
    /**
     * 查询地铁省市-根据id关联地铁号线
     * 
     * @param metroId 地铁省市-根据id关联地铁号线主键
     * @return 地铁省市-根据id关联地铁号线
     */
    MetroLine selectMetroByMetroId(Long metroId);

    /**
     * 查询地铁省市-根据id关联地铁号线列表
     * 
     * @param metro 地铁省市-根据id关联地铁号线
     * @return 地铁省市-根据id关联地铁号线集合
     */
    List<MetroLine> selectMetroList(MetroLine metro);

    /**
     * 新增地铁省市-根据id关联地铁号线
     * 
     * @param metro 地铁省市-根据id关联地铁号线
     * @return 结果
     */
    int insertMetro(MetroLine metro);

    /**
     * 修改地铁省市-根据id关联地铁号线
     * 
     * @param metro 地铁省市-根据id关联地铁号线
     * @return 结果
     */
    int updateMetro(MetroLine metro);

    /**
     * 删除地铁省市-根据id关联地铁号线
     * 
     * @param metroId 地铁省市-根据id关联地铁号线主键
     * @return 结果
     */
    int deleteMetroByMetroId(Long metroId);

    /**
     * 批量删除地铁省市-根据id关联地铁号线
     * 
     * @param metroIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteMetroByMetroIds(Long[] metroIds);

    /**
     * 校验线路是否已存在
     * @param lineName     地铁名称
     * @param provinceId  省名称
     * @param cityId      市名称
     * @return
     */
    int checkMetroAndCity(@Param("lineName") String lineName,@Param("provinceId") Long provinceId,@Param("cityId") Long cityId);

    /**
     * 软删除路线
     * @param metroIds
     * @return
     */
    int softDeleteMetroByMetroIds(Long[] metroIds);

    List<Node> selectLinesByCityId(Long cityId);
}
